/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author JOSE LUIS
 */
import java.sql.*;
import javax.swing.JOptionPane;
import java.net.Socket;


public class Conexion {
public String bd = "abrazio_inventario";
public String login = "abrazio_jose";
public String password = "jose.2012";
public String url = "jdbc:mysql://204.124.180.228/"+bd;  
private Persona pers=new Persona();
Connection conn = null; 

 public Conexion() { 
 try{ 
 Class.forName("com.mysql.jdbc.Driver"); 
 conn = DriverManager.getConnection(url,login,password); 
 if (conn!=null){ 
  System.out.println("OK base de datos "+bd+" listo");
 }
 }catch(SQLException e){ 
    // Hornos ho =new Hornos();
 System.out.println(e); 
if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 

 
 }catch(ClassNotFoundException e){ 
 System.out.println(e); 
 } 
 } 

 public Connection getConnection(){ 
 return conn; 
 } 

 public boolean comprobarConexionInternet(){
    String dirWeb = "www.google.com";
    
  
int puerto = 80;
try{ 
Socket s = new Socket(dirWeb, puerto);
return false;
}catch(Exception ex){
 
 return true;
}
        
}

 //___________________________________________________________________________________ Soy una barra separadora 
 /* METODO PARA REALIZAR UNA CONSULTA A LA BASE DE DATOS
 * INPUT: 
 * table => nombre de la tabla donde se realizara la consulta, puede utilizarse tambien INNER JOIN
 * fields => String con los nombres de los campos a devolver Ej.: campo1,campo2campo_n
 * where => condicion para la consulta
 * OUTPUT: un object[][] con los datos resultantes, sino retorna NULL
 */
 /**
 * 
 * @param table
 * @param fields
 * @param where
 * @return
 */
 public Object [][] select(String table, String fields, String where){
 int registros = 0; 
 String colname[] = fields.split(",");

 //Consultas SQL
 String q ="SELECT " + fields + " FROM " + table;
 String q2 = "SELECT count(*) as total FROM " + table;
 if(where!=null)
 {
 q+= " WHERE " + where;
 q2+= " WHERE " + where;
 }
 try{
 PreparedStatement pstm = conn.prepareStatement(q2);
 ResultSet res = pstm.executeQuery();
 res.next();
 registros = res.getInt("total");
 res.close();
 }catch(SQLException e){
 System.out.println(e);
 comprobarConexionInternet();
 }

 //se crea una matriz con tantas filas y columnas que necesite
 Object[][] data = new String[registros][fields.split(",").length];
 //realizamos la consulta sql y llenamos los datos en la matriz "Object"
 try{
 PreparedStatement pstm = conn.prepareStatement(q);
 ResultSet res = pstm.executeQuery();
 int i = 0;
 while(res.next()){
 for(int j=0; j<=fields.split(",").length-1;j++){
 data[i][j] = res.getString( colname[j].trim() );
 }
 i++; }
 res.close();
 }catch(SQLException e){
 System.out.println(e);
 if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 
 }
 return data;
 }
//___________________________________________________________________________________ Soy una barra separadora :)
/* METODO PARA INSERTAR UN REGISTRO EN LA BASE DE DATOS
 * INPUT:
	table = Nombre de la tabla
	fields = String con los nombres de los campos donde insertar Ej.: campo1,campo2campo_n
	values = String con los datos de los campos a insertar Ej.: valor1, valor2, valor_n
*/
//___________________________________________________________________________________ Soy una barra separadora :)
   /**
    * 
    * @param table
    * @param fields
    * @param values
    * @return
    */
   public boolean insert(String table, String fields, String values)
    {
        boolean res=false;
        //Se arma la consulta
        String q=" INSERT INTO " + table + " ( " + fields + " ) VALUES ( " + values + " ) ";
        //se ejecuta la consulta
        try {
            PreparedStatement pstm = conn.prepareStatement(q);
            pstm.execute();
            pstm.close();
            res=true;
         }catch(SQLException e){
         System.out.println(e);
        if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 
      }
      return res;
    }
     /**
     * 
     * @param tabla
     * @param valor
     * @param columna
     * @param condicion
     */
    public void Update (String tabla,String valor,String columna,String condicion){
         String u=" UPADTE " + tabla + 
                 " SET " + columna + "=" + valor + 
                 " where "+ condicion;
        //se ejecuta la consulta
        try {
            PreparedStatement pstm = conn.prepareStatement(u);
            pstm.execute();
            pstm.close();
         }catch(SQLException e){
         System.out.println(e);
         if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 
      }
    }
 public void desconectar(){
      try{
        conn.close();  
      }catch(SQLException excepcionSQL){
         excepcionSQL.printStackTrace();
         JOptionPane.showMessageDialog(null, "Error al desconectar de base de datos ",null,JOptionPane.ERROR_MESSAGE);
          if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 
      }
   }
    
   public void eliminar(String tabla,String condicion){
       String d=" DELETE FROM "+tabla+ 
                 " where "+ condicion;
        //se ejecuta la consulta
        try {
            PreparedStatement pstm = conn.prepareStatement(d);
            pstm.executeUpdate();
            pstm.close();
         }catch(SQLException e){
         System.out.println(e);
       if(comprobarConexionInternet()){
 JOptionPane.showMessageDialog(null,"No existe acceso a internet. Verifique y vuelva a intentarlo.",null,JOptionPane.ERROR_MESSAGE);    
 } 
      }
   }

 public boolean ingresar(String user, String contra)
 { 
     boolean ingreso=true;
 Object[][] res = this.select("usuarios", "cedula , contraseña ", " cedula='"+user+"' AND contraseña='"+contra+"' ");
   comprobarConexionInternet();
   
     if( res.length > 0)
 {
 pers.insertarCedula( res[0][0].toString());
            pers.setContraseña( res[0][1].toString() );

 ingreso=true;
 } 
 else
 ingreso=false;  
   
 
 
  return ingreso;
 }
 
 }
 
 











